#include "audio.h"

Audio::Audio(QObject *parent) : QObject(parent)
{

}
//开始录音
void Audio::startAudio(QString filePathAndName)//文件名在widge.cpp中写死
{
    //1.获取默认音频输入设备
    QAudioDeviceInfo device=QAudioDeviceInfo::defaultInputDevice();
    if(device.isNull())
    {
        //设备为空就弹异常
        QMessageBox::warning(NULL,"warning","录音设备不存在！");
    }
    else
    {
        //2.设置音频格式(https://cloud.baidu.com/doc/SPEECH/s/qlcirqhz0)
        QAudioFormat m_format;
        //设置采样率
        m_format.setSampleRate(16000);
        //设置通道数
        m_format.setChannelCount(1);
        //设置位深
        m_format.setSampleSize(16);
        //设置编码格式
        m_format.setCodec("audio/pcm");
        //3.判断设备是否支持这种格式（不支持就转到支持）
        if(!device.isFormatSupported(m_format))
        {
            m_format=device.nearestFormat(m_format);
        }
        //4.创建文件去存储录制的声音
        m_file=new QFile;
        m_file->setFileName(filePathAndName);
        m_file->open(QIODevice::WriteOnly);//打开
        //创建录音对象
        m_audioInput=new QAudioInput(m_format,this);
        //开始录音
        m_audioInput->start(m_file);//参数表示存放的设备
    }
}
//停止录音
void Audio::stopAudio()
{
    //停止录音
    m_audioInput->stop();
    //关闭文件
    m_file->close();
    //释放文件
    delete m_file;
    m_file=NULL;
}
